ASP NET - Conceitos básicos 2

No documento 02-Basico ASP NET 1 discutimos o zero à esquerda do .NET Framework, ou seja, o que é necessário saber para entender o que esta por vir.

Nesta página passamos da teoria para a prática, ou seja, vamos ver como um projeto Web é feito em ASP NET.

Componentes de um projeto ASP NET

Ao criarmos um projeto básico ASP NET Framework, aplicações web em C# temos os seguintes componentes instalados automaticamente:

Em referências:

Bootstrap : Nosso velho amigo. Um framework muito útil para criar sites responsivos ou com uma qualidade e padrão a nível dos melhores do mundo.

JQuery : Outro velho amigo. Um framework muito útil para criar sites com a melhor interface possível com o usuário além de uma coleção de funcionalidades que nos ajudam muito, por exemplo, ao trabalhar com o AJAX.

Friendly URLS : URL Amigáveis. Recurso imprescindível para quem pretende ter uma ajudinha do google no ranqueamento do seu site na Web. Praticamente obrigatório em sites comerciais.

Web Optimization-aplicações web: Todas as nossas páginas serão aplicações web e este componente é o modelo que proporciona seu funcionamento.

.NET Compiler Plataform : É o componente responsável para gerar o código das páginas (code behind) em MSIL que será compilado em uma dll única para todo a solução.

CSharp : É a linguagem de programação escolhida, C#. Poderia ser o VB NET que nada significativo mudaria.

MSAJAX : É a implementação das funções AJAX pela Microsoft. Se você se lembra ajax é um recurso do browser (httprequest) que podemos acessar via JavaScript mas bibliotecas como JQuery ou esta da Microsoft incorporam funções que expandem as funcionalidades do Ajax.

WebForms : Como disse acima, todas as páginas web são denominadas aplicações web no projeto asp net.

WebInfrastructre : Contém as funcionades de infraestrutura que a aplicação web precisa para funcionar. Podemos citar, entre muitas, o acesso aos serviços de dns e dhcp.

Json : Inclui as funcionalidades para codificação e decodificação de dados formatados em JSON que é um dos padrões de troca de informações via web como o XML por exemplo.

System : São os componentes de acesso ao sistema operacional do servidor.

System Configuration : Armazenam as opções para este projeto.

Core : Refere-se aos componentes do framework core da Microsoft. Caso você precise interagir com algum componente dessa classe será com este recurso que irá fazê-lo.

System.Data : Armazena todos os padrões para troca de dados.

Drawing: É o recurso que permite, por exemplo, desenhar uma reta numa página como um hr, por exemplo.

System.Web : É o principal serviço que define a aplicação web. Contém todos os padrões para trabalhar com páginas web.

Web.Entity : Caso você vá trabalhar com bases de dados SQL você provavelmente irá usar este recurso.
Ele permite, por exemplo, que sua base de dados tiver uma modificação ( como acrescentou um campo numa tabela) que essa modificação seja automaticamente feita no seu aplicativo de maneira que possa evitar possíveis erros futuros ao desconsiderar essa coluna.

Web.Services : São os serviços nativos da web como redirecionamento de páginas, acesso ao conteúdo dos objetos response e request etc.

System.XML : Caso deseje trabalhar com dados no formato XML você vai usar este componente. É um parceiro que complementa o componente JSON. Com a extensão Linq permite acessar diretamente servidores sql.

WebGrease: É uma ferramenta que permite otimizar os arquivos de javascript, css e imagens.
Esta optimização normalmente é uma compactação dos arquivos e outros serviços como sass - compilação de arquivos css mas com uma certa 'inteligencia'.

Pasta App Start:

Em BundleConfig esta a configuração da sua aplicação. Por exemplo, os módulos AJAX, GridView, forms são definidos aqui de maneira automatica. Note que há uma referência ao 'modernizr' que é uma ferramenta auxiliar muito útil ao compatibilizar recursos em diferentes browsers.

Em RouteConfig.cs estão as rotas de sua aplicação e no caso de url amigáveis o Visual Studio fará esse registro automaticamente para você.

Pasta Content:

Nesta pasta estão os arquivos do BootStrap bem como o arquivo .css que rege todo o site.

Pasta Fonts

As fontes glyphicons-halflings-regular já vem instaladas na aplicação mas se você precisa de mais fontes como o fontawesome é aqui que deverá depositar seus recursos.

Pasta Scripts:

Nesta pasta estão todos os scripts do site como do bootstrap, jquery, modernizr

Pasta root do site:

Se você criou uma app aplicações web comum terá as seguintes páginas:


Página About

:

É a página a respeito do site. Dá as informações básicas sobre os objetivos do site, administradores, etc.

Página Contact

É a página que agrupa as informações caso o usuário deseje entrar em contato com o site.
Pode ter informações ou links para emails ou mesmo um formulário para contato.

Página Default

Esta é a home page do site.

Arquivo Global.asax

Este arquivo contém as informações iniciais do site como roteamento.
Trabalha em conjunto com o objeto Session do ASP e armazena as informações que todos os usuários podem 'enxergar' como, por exemplo, o número de visitantes do site.
Enquanto o objeto Session armazena as informações de cada usuário separadamente o objeto Global.asax armazena as informações comuns a todos os usuários da aplicação corrente.

Arquivo packages.config

Neste arquivo é armazenado as versões dos componentes instalados no seu site.
Ele armazena em qual versão do .NET seu aplicativo foi compilado, a versão do jquery, bootstrap etc.

Arquivo Site.Master

Este arquivo tem o conteúdo comum a todas as páginas do site.
A tag <%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master" inclui esta página nas outras páginas do site.
Este arquivo é escrito em ASP NET/HTML e nele esta inserido as referências a todos os scripts do script manager como bootstrap, jquery, webparts etc.

Além disso neste modelo esta definido no topo da página (header) uma barra de navegação e onde o conteúdo das páginas filhas devem ser inseridos em <asp:ContentPlaceHolder ID="MainContent" runat="server">
No final há um rodapé (footer) bem singelo com direitos autorais

Arquivo Web.config

Este arquivo contém as informações gerais sobre o site.
Todas as páginas do site tem acesso as informações deste arquivo.
Suponha que você queira guardar o string de conexão SQL. Este seria o melhor lugar. Suponha que você tenha um servidor de produção, um de desenvolvimento e outro de teste. Aqui seria o melhor lugar para guardar as definições dos recursos de cada um deles.
Este cara contém os providers que podem apontar para servidores SQL por exemplo. Se ao abrir um projeto e na máquina do cliente não tiver o componente de acesso para o SQL server o aplicativo irá solicitar a instalação automatica do mesmo de um site assinado pela Microsoft com todas as garantias.
Um conselho meu, perca um tempo e estude este arquivo (global.asax). Ele é uma peça chave do seu site e muitas entrevistas de empregos perguntam como configurar ou quais tipos de configurações fazemos no Web.config.

Componentes da página Web c#

As páginas web em c# são compostas por 3 componentes :

1-Arquivo pagina.aspx que é o fonte web da página como se fosse o html.
Insere na página a referencia aos componentes externos que ela usa como:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

e define o código do evento Page Load da página ( protected void Page_Load(object sender, EventArgs e) ).

2-Arquivo pagina.aspx.designer.cs que contém o registros dos componentes server-side da página.
Ao incorporar um componente, por exemplo, um label neste aquivo estará registrado todas as suas propriedades como textos, posição, cor, cor de fundo, etc.

Importante : Não altere o arquivo pagina.aspx.designer.vb porque o Visual Studio faz isso automaticamente e, se você fizer isso na mão vai provocar um erro.
Por exemplo você chamou um label e neste arquivo dele esta o nome, label1 por exemplo. Se você entrar neste arquivo e mudar o nome do componente para label2 o registro foi alterado numa página apenas e precisaria ser alterado em todas as páginas que usam o componente. Portanto, se for renomear uma página, um componente faça pela janela de propriedades ou pelo gerenciador de soluções mas nunca neste arquivo.

3-Arquivo pagina.aspx.cs contém o code behind (código dos componentes) da página. Por exemplo, ao inserir um botão o botão é inserido na página mas se quiser definir o código quando pressionado será no arquivo pagina.aspx.cs que estará esse código.

Importante: Todos os 'code behind' de todos os componentes de todas as páginas são aglutinados em uma única dll quando o programa é compilado. Ao publicar a dll vai junto com as páginas aspx.

O que muda se a linguagem fosse VB NET ?

Se você programa em C#, VB NET ou Java sabe que as coisas não muito semelhantes, impressionantemente semelhantes. Faça um programa em JSP, outro em PHP e outro em ASP Clássico. Verá que a lei de Lavoisier se aplica em TI (Lavoisier foi um gênio da Quimica e criou a lei da conservação que diz que 'neste mundo nada se constrói e nada se destrói, tudo se transforma').

Na pasta referências continuamos tendo Bootstrap, JQuery, Friendly URLS, Web Optimization-aplicações web, .NET Compiler Plataform, MSAJAX, WebForms, WebInfrastructre, Json, System, System Configuration, Core, System.Data, Drawing, System.Web, Drawing, System.Web, Web.Entity, Web.Services, System.XML, WebGrease

Contudo as referências a CSharp não existe e não tem uma referência a VBNET

Componentes da página Web VB NET

As páginas web em VBNET são compostas por 3 componentes :

1-Arquivo pagina.aspx que é o fonte web da página como se fosse o html.

2-Arquivo pagina.aspx.designer.vb que contém o registros dos componentes server-side da página.
Ao incorporar um componente, por exemplo, um label neste aquivo estará registrado todas as suas propriedades como textos, posição, cor, cor de fundo, etc.

Importante : Não altere o arquivo pagina.aspx.designer.vb porque o Visual Studio faz isso automaticamente e, se você fizer isso na mão vai provocar um erro.
Por exemplo você chamou um label e neste arquivo dele esta o nome, label1 por exemplo. Se você entrar neste arquivo e mudar o nome do componente para label2 o registro foi alterado numa página apenas e precisaria ser alterado em todas as páginas que usam o componente. Portanto, se for renomear uma página, um componente faça pela janela de propriedades ou pelo gerenciador de soluções mas nunca neste arquivo.

3-Arquivo pagina.aspx.vb contém o code behind (código dos componentes) da página. Por exemplo, ao inserir um botão o botão é inserido na página mas se quiser definir o código quando pressionado será no arquivo pagina.aspx.vb que estará esse código.

Importante: Todos os 'code behind' de todos os componentes de todas as páginas são aglutinados em uma única dll quando o programa é compilado. Ao publicar a dll vai junto com as páginas aspx.

Pastas acessórias

Automaticamente conforme você vai incorporando itens, componentes, códigos o visual studio vai colocando as coisas no lugar certo para que no final de tudo, na compilação, seja gerado todas as páginas e códigos necessários para que a aplicação funcione corretamente.

Quando mandamos compilar a solução algumas pastas são criadas e o resultado da compilação nelas depositado.

Pasta bin

Contém todas as dlls necessárias para rodar a aplicação, entre elas, por exemplo, AspNet.ScriptManager.jQuery.dll que tem o código (script) do ajax encapsulado numa dll. Note que cada componente adicionado tem sua dll separada.
Também teremos o aplicação.dll que é o código de nossa aplicação compilada.

Pasta obj

Contém as infomações sobre a compilação do progrma. Ao compilar a aplicação podemos definir se estamos gerando uma aplicação para depuração(ou debug) ou para produção. Pode ver que no topo do visual studio quando o projeto esta aberto temos uma janela onde esta escrito 'Debug' ou 'Release'. Debug é depuração e release é produção ou uma versão definitiva da aplicação ( que, por exemplo, passou nos testes e pode ser publicada).

Pasta Packages

Contém uma lista de todos os pacotes Nuget instalados na aplicação. Então se você, por exemplo, incorporou o BootStrap em seu projeto nesta pasta teremos o Script (Script Manager) para todas as versões do .NET necessárias para o .NET.